#include <head.h>
//孤儿进程是指其父进程在子进程之前终止的进程。
// 当父进程终止时，子进程将成为孤儿进程，并由 init 进程（PID 1）接管。
// init 进程将负责处理孤儿进程的资源释放和后续操作。
int main()
{
    pid_t pid = fork();

    if (pid < 0)
    {
        perror("fork");
        exit(EXIT_FAILURE);
    }
    else if (pid == 0)
    {
        // 子进程
        printf("子进程 (PID %d) 正在运行，父进程 (PID %d)\n", getpid(), getppid());
        sleep(2); // 等待父进程终止
        printf("子进程 (PID %d) 现在是孤儿进程，被 init 进程 (PID %d) 收养\n", getpid(), getppid());
        exit(EXIT_SUCCESS);
    }
    else
    {
        // 父进程
        printf("父进程 (PID %d) 正在运行\n", getpid());
        sleep(1); // 让子进程先运行
        printf("父进程 (PID %d) 终止\n", getpid());
        exit(EXIT_SUCCESS);
    }

    return 0;
}